package com.coderush.admin.core.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

/**
 * Spring Security 相关配置类
 * <p>
 * 该配置类主要用于定义 Spring Security 相关的 Bean 配置
 * </p>
 */
@Configuration  // 标识这是一个 Spring 配置类，Spring 容器启动时会自动加载
public class SecurityConfig {

    /**
     * 配置密码编码器 Bean
     * <p>
     * 使用 BCrypt 强哈希算法进行密码加密和验证
     * </p>
     *
     * @return BCryptPasswordEncoder 实例
     *
     * @apiNote BCrypt 特点：
     * 1. 自动加盐处理，相同密码每次加密结果不同
     * 2. 内置随机盐管理
     * 3. 可通过 strength 参数控制加密强度（默认 10）
     * 4. 符合 Spring Security 的 PasswordEncoder 接口规范
     *
     * @see BCryptPasswordEncoder
     * @see PasswordEncoder
     */
    @Bean  // 将方法返回的对象注册为 Spring 容器中的 Bean
    public PasswordEncoder passwordEncoder() {
        // 创建 BCrypt 密码编码器实例
        // 可以通过构造参数指定加密强度：new BCryptPasswordEncoder(12)
        return new BCryptPasswordEncoder();
    }
}